package com.zcx.test.common.util;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.algorithms.Algorithm;
import com.zcx.test.pojo.User;
import lombok.extern.slf4j.Slf4j;

import java.util.Calendar;

/**
 * @author zhaochangxin
 * @date 2022/3/3 10:22
 * * <br/>JWT的数据结构为：A.B.C三部分数据，由字符点"."分割成三部分数据
 * * <br/>A-header头信息
 * * <br/>B-payload 有效负荷 一般包括：已注册信息（registered claims），公开数据(public claims)，私有数据(private claims)
 * * <br/>C-signature 签名信息 是将header和payload进行加密生成的
 */
// JWT工具类
@Slf4j
public class JwtUtils {
    /**
     * 生成token
     *
     * @param u user
     * @return token
     */
    public static String getToken(User u) {
        Calendar instance = Calendar.getInstance();
        // 默认令牌过期时间10分钟
        instance.add(Calendar.MINUTE, 10);
        JWTCreator.Builder builder = JWT.create();
        log.info(u.getPassword());
        return JWT.create()
                .withAudience(String.valueOf(u.getId()))
                .withExpiresAt(instance.getTime())
                .sign(Algorithm.HMAC256(String.valueOf(u.getId())));
    }
}

